package org.bwf.study.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component //实现自动装配
@Slf4j
public class SameJson {
    // 定义切点
    // 就是指明需要拦截的对象  * 是通配的意思
    @Pointcut("execution(public * org.bwf.study.controller.*.*(..))")
    public void msgReturn(){}


    // 申明通知类型
    // 什么时候通知他进行拦截
    // rv就是拦截时获取的返回值，它本身就是一个占位符
    @AfterReturning(pointcut = "msgReturn()", returning = "rv")
    public void doAfterReturning(ReturnInfo rv){
        log.info("doAfterReturning--SameJson............");
        if(rv.getData() == null){
            rv.setCode(400);
            rv.setMessage("ERROR");
        }else{
            rv.setCode(200);
            rv.setMessage("SUCCESS");
        }
    }

}
